package com.cskaoyan.object01.syntax.keythis;

public class Student {

    String name;

    int age;

    int studentId;

    /*
         自己定义无参默认构造方法
         我希望利用默认构造方法创建出的对象，各个成员变量值，不是默认初值
          而是希望，它们的默认初始是
          name      "未知"
          age         -1
          studentId  -1
      */
    public Student() {
//        name = "未知";
//        age = -1;
//        studentId = -1;

        // 调用三参构造方法
        // System.out.println();
        this("未知", -1, -1);
    }

    // 构造方法的重载
    public Student(String stuName) {
        name = stuName;
    }

    // 定义构造方法
    public Student(String name, int age, int studentId) {
        // lisi--20--2
        //System.out.println(name + "--" + age + "--" + studentId);
        // 利用this解决成员变量的隐藏
        this.name = name;
        this.age = age;
        this.studentId = studentId;
    }

    // 对象名.callConstructor()
    public void callConstructor() {
        // 利用this对构造方法的调用，不能出现在普通方法的方法体中
        //this("未知", -1, -1);
    }

    public void eat() {
        // 普通成员方法中
        System.out.println(this.name);
        System.out.println("吃饭ing");

        //  这里的name相当于this.name 简化写法，前提是没有定义同名成员变量
        System.out.println(name);
    }

    public void test() {
        // 通过this访问当前对象的成员方法
        this.eat();
        // 这里相当于this.eat()的简化写法
        eat();
    }

}
